#include <spdlog/spdlog.h>
#include <spdlog/sinks/stdout_color_sinks.h> 
#include <spdlog/sinks/basic_file_sink.h> 
#include <spdlog/async.h>
#include <iostream>

int main(){
    // 1. 设置全局刷新策略 
    spdlog::flush_every(std::chrono::seconds(1)); // 每秒刷新
    spdlog::flush_on(spdlog::level::debug);       // debug 及以上级别立即刷新
    spdlog::set_level(spdlog::level::debug);      // 全局日志等级

    // 2. 初始化异步日志输出线程配置
    // void init_thread_pool(size_t q_size, size_t thread_count)
    spdlog::init_thread_pool(3072, 1);

    // 3. 创建异步日志器
    auto logger = spdlog::stdout_color_mt<spdlog::async_factory>("async-logger");
    logger->set_pattern("[%n][%H:%M:%S][%t][%-7l] %v");

    logger->trace("你好! {}", "千璇"); // trace 默认不会输出（因为 level >= debug 才输出）
    logger->debug("你好! {}", "千璇");
    logger->info("你好! {}", "千璇");
    logger->warn("你好! {}", "千璇");
    logger->error("你好! {}", "千璇");
    logger->critical("你好! {}", "千璇");
    std::cout << "日志输出演示完毕!\n";

    // 3. 清理所有 logger，确保 flush 并释放资源
    spdlog::drop_all(); 
    return 0;
}